/*
 ============================================================================
 Name        : Logger.h
 Author      : Grupo Klow
 ============================================================================
 */

#ifndef LOGGER_H_
#define LOGGER_H_

#include <stdio.h>

//Esta constante indica la longitud del bloque que se utiliza para
//leer y escribir los archivos en la opcion de volcar
//Tambien es utilizado en la lectura del Buscar
#define LONGITUD_BUFFER 128
//Cuantos caracteres ocupa la fecha que se agrega a cada linea
#define LONGITUD_FECHA 19

typedef struct Logger {
	//La cantidad maxima de bytes que puede tener el archivo, luego se corta.
	unsigned int cantidadMaximaBytes;
	// Bytes que pesa el archivo esta el momento
	unsigned int bytesUtilizados;
	// Marca el proximo archivo a generar en caso de que el actual se llene
	unsigned int sigParte;

	FILE * handleArchivo;
	char * nombreArchivo;
	char * extension;
} Logger;

/* Inicia el logger */
void Logger_Iniciar(Logger * logger, char * nombreArchivo, unsigned int capacidadMaxima);

/* Cierra el logger liberando recursos. */
void Logger_Cerrar(Logger * logger);

/* Muestra informacion sobre el estado actual del logger */
void Logger_MostrarInfo(Logger * logger, FILE * salida);

/* Inserta cadena en el logger */
void Logger_Insertar(Logger * logger, char * cadena);

/* Busca una cadena de caracteres entre todos los archivos que componen al logger */
unsigned int Logger_Buscar(Logger * logger, char * cadenaBuscada, FILE * salida);

/* Une todos los archivos que componen al logger en el archivo indicado */
void Logger_Volcar(Logger * logger, char * nombreArchivo);

#endif /* LOGGER_H_ */
